package controller;

import eccezioni.UtenteBannatoException;
import eccezioni.UtenteNonTrovatoException;
import eccezioni.UtenteNonVerificatoException;
import entity.UtenteRegistrato;
import javax.ejb.Local;

/**
 * Metodi per il login
 * @author Ale
 */
@Local
public interface ControllerLoginLocal {
    
    /**
     * Cerca l'utente avente la mail e la password specificate
     * @param mail mail con cui l'utente si è registrato
     * @param password password per l'accesso 
     * @return l'utente se la coppia mail/password è corretta
     * @throws UtenteNonTrovatoException se la coppia mail/password non è presente nel sistema
     * @throws UtenteBannatoException se l'utente è stato trovato, ma è bannato
     * @throws UtenteNonVerificatoException se l'utente è stato trovato, ma non è ancora stato verificato (la registrazione non è completa)
     */
    public UtenteRegistrato login(String mail, String password) throws UtenteNonTrovatoException, UtenteBannatoException, UtenteNonVerificatoException;
    
    /**
     * Cerca l'utente avente la mail specificata, e che si è iscritto non direttamente sul sito
     * @param mail mail con cui l'utente si è registrato
     * @return l'utente se la mail è presente nel sistema
     * @throws UtenteNonTrovatoException se la mail non è presente nel sistema 
     * @throws UtenteBannatoException se l'utente è stato trovato, ma è bannato
     * @throws UtenteNonVerificatoException se l'utente è stato trovato, ma non è ancora stato verificato (la registrazione non è completa)
     */
    public UtenteRegistrato loginOpenId(String mail) throws UtenteNonTrovatoException, UtenteBannatoException, UtenteNonVerificatoException;

}
